{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第三周作业 在 Rental Listing Inquiries 数据上练习 xgboost 参数调优 \n",
    "\n",
    "Rental Listing Inquiries 数据集是 Kaggle 平台上的一个分类竞赛任务，需要根据 公寓的特征来预测其受欢迎程度（用户感兴趣程度分为高、中、低三类）。其 中房屋的特征 x 共有 14 维，响应值 y 为用户对该公寓的感兴趣程度。评价标准 为 logloss。 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Year  Month  Day       ...        walk  walls  war  washer  \\\n",
       "0       4.5  2016      6   24       ...           0      0    0       0   \n",
       "1       3.0  2016      6   12       ...           0      0    0       0   \n",
       "2       2.0  2016      4   17       ...           0      0    0       0   \n",
       "3       2.0  2016      4   18       ...           0      0    0       0   \n",
       "4       5.0  2016      4   28       ...           0      0    1       0   \n",
       "\n",
       "   water  wheelchair  wifi  windows  work  interest_level  \n",
       "0      0           0     0        0     0               1  \n",
       "1      0           0     0        0     0               2  \n",
       "2      0           0     0        0     0               0  \n",
       "3      0           0     0        0     0               2  \n",
       "4      0           0     0        0     0               2  \n",
       "\n",
       "[5 rows x 228 columns]"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dpath = './data/'\n",
    "train = pd.read_csv(dpath +\"RentListingInquries_FE_train.csv\")\n",
    "test = pd.read_csv(dpath +\"RentListingInquries_FE_test.csv\")\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 确定弱学习器数目\n",
    "\n",
    "弱学习器数目 n_estimators = 226"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# drop ids and get labels\n",
    "y_train = train['interest_level']\n",
    "\n",
    "train = train.drop([\"interest_level\"], axis=1)\n",
    "X_train = np.array(train)\n",
    "\n",
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "#直接调用xgboost内嵌的交叉验证（cv），可对连续的n_estimators参数进行快速交叉验证\n",
    "#而GridSearchCV只能对有限个参数进行交叉验证\n",
    "def modelfit(alg, X_train, y_train, cv_folds=None, early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param['num_class'] = 3\n",
    "    \n",
    "    #直接调用xgboost，而非sklarn的wrapper类\n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "             metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "  \n",
    "    cvresult.to_csv('1_nestimators.csv', index_label = 'n_estimators')\n",
    "    \n",
    "    #最佳参数n_estimators\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    \n",
    "    # 采用交叉验证得到的最佳参数n_estimators，训练模型\n",
    "    alg.set_params(n_estimators = n_estimators)\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#params = {\"objective\": \"multi:softprob\", \"eval_metric\":\"mlogloss\", \"num_class\": 9}\n",
    "xgb1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=1000,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb1, X_train, y_train, cv_folds = kfold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x202079dbeb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "        \n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(0, cvresult.shape[0])\n",
    "        \n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators4_1.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 树的最大深度和min_children_weight调优(粗调)\n",
    "\n",
    "Best: -0.587716 using {'max_depth': 7, 'min_child_weight': 5}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda2\\envs\\python3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:667: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.60055, std: 0.00165, params: {'max_depth': 3, 'min_child_weight': 1},\n",
       "  mean: -0.60023, std: 0.00190, params: {'max_depth': 3, 'min_child_weight': 3},\n",
       "  mean: -0.60058, std: 0.00185, params: {'max_depth': 3, 'min_child_weight': 5},\n",
       "  mean: -0.58870, std: 0.00367, params: {'max_depth': 5, 'min_child_weight': 1},\n",
       "  mean: -0.58883, std: 0.00266, params: {'max_depth': 5, 'min_child_weight': 3},\n",
       "  mean: -0.58817, std: 0.00249, params: {'max_depth': 5, 'min_child_weight': 5},\n",
       "  mean: -0.59052, std: 0.00274, params: {'max_depth': 7, 'min_child_weight': 1},\n",
       "  mean: -0.58883, std: 0.00214, params: {'max_depth': 7, 'min_child_weight': 3},\n",
       "  mean: -0.58772, std: 0.00247, params: {'max_depth': 7, 'min_child_weight': 5},\n",
       "  mean: -0.60402, std: 0.00434, params: {'max_depth': 9, 'min_child_weight': 1},\n",
       "  mean: -0.59813, std: 0.00241, params: {'max_depth': 9, 'min_child_weight': 3},\n",
       "  mean: -0.59507, std: 0.00303, params: {'max_depth': 9, 'min_child_weight': 5}],\n",
       " {'max_depth': 7, 'min_child_weight': 5},\n",
       " -0.5877160763251699)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "max_depth = range(3,10,2)\n",
    "min_child_weight = range(1,6,2)\n",
    "param_test2_1 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "\n",
    "xgb2_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=226,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "gsearch2_1 = GridSearchCV(xgb2_1, param_grid = param_test2_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch2_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch2_1.grid_scores_, gsearch2_1.best_params_,     gsearch2_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.587716 using {'max_depth': 7, 'min_child_weight': 5}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nsyoHCzMzq/oHsm6QKjj9qrsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x202079a1c18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch2_1.best_score_, gsearch2_1.best_params_))\n",
    "test_means = gsearch2_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch2_1.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(max_depth), len(min_child_weight))\n",
    "train_scores = np.array(train_means).reshape(len(max_depth), len(min_child_weight))\n",
    "\n",
    "for i, value in enumerate(max_depth):\n",
    "    pyplot.plot(min_child_weight, -test_scores[i], label= 'test_max_depth:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'max_depth' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig('max_depth_vs_min_child_weght_1.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 树的最大深度和min_children_weight调优(细调)\n",
    "\n",
    "Best: -0.587228 using {'max_depth': 6, 'min_child_weight': 4}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': [6, 7, 8], 'min_child_weight': [4, 5, 6]}"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "max_depth = [6,7,8]\n",
    "min_child_weight = [4,5,6]\n",
    "param_test2_2 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "param_test2_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda2\\envs\\python3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:667: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.58723, std: 0.00344, params: {'max_depth': 6, 'min_child_weight': 4},\n",
       "  mean: -0.58785, std: 0.00224, params: {'max_depth': 6, 'min_child_weight': 5},\n",
       "  mean: -0.58769, std: 0.00308, params: {'max_depth': 6, 'min_child_weight': 6},\n",
       "  mean: -0.58999, std: 0.00270, params: {'max_depth': 7, 'min_child_weight': 4},\n",
       "  mean: -0.58772, std: 0.00247, params: {'max_depth': 7, 'min_child_weight': 5},\n",
       "  mean: -0.58897, std: 0.00264, params: {'max_depth': 7, 'min_child_weight': 6},\n",
       "  mean: -0.59207, std: 0.00327, params: {'max_depth': 8, 'min_child_weight': 4},\n",
       "  mean: -0.59132, std: 0.00234, params: {'max_depth': 8, 'min_child_weight': 5},\n",
       "  mean: -0.58987, std: 0.00187, params: {'max_depth': 8, 'min_child_weight': 6}],\n",
       " {'max_depth': 6, 'min_child_weight': 4},\n",
       " -0.5872279576180828)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb2_2 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=226,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch2_2 = GridSearchCV(xgb2_2, param_grid = param_test2_2, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch2_2.fit(X_train , y_train)\n",
    "\n",
    "gsearch2_2.grid_scores_, gsearch2_2.best_params_,     gsearch2_2.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.587228 using {'max_depth': 6, 'min_child_weight': 4}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20207512f60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch2_2.best_score_, gsearch2_2.best_params_))\n",
    "test_means = gsearch2_2.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_2.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_2.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_2.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch2_2.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_2.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(min_child_weight), len(max_depth))\n",
    "train_scores = np.array(train_means).reshape(len(min_child_weight), len(max_depth))\n",
    "\n",
    "for i, value in enumerate(min_child_weight):\n",
    "    pyplot.plot(max_depth, test_scores[i], label= 'test_min_child_weight:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'max_depth' )                                                                                                      \n",
    "pyplot.ylabel( '- Log Loss' )\n",
    "pyplot.savefig( 'max_depth_vs_min_child_weght2.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 再次计算弱学习器数目\n",
    "\n",
    "弱学习器数目 n_estimators = 233"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def modelfit2(alg, X_train, y_train, cv_folds=None, early_stopping_rounds=100):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param['num_class'] = 3\n",
    "    \n",
    "    #直接调用xgboost，而非sklarn的wrapper类\n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "             metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "  \n",
    "    cvresult.to_csv('2_nestimators.csv', index_label = 'n_estimators')\n",
    "    \n",
    "    #最佳参数n_estimators\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    \n",
    "    cvresult.to_csv('my_preds4_6_226.csv', index_label = 'n_estimators')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#调整max_depth和min_child_weight之后再次调整n_estimators(6,4)\n",
    "xgb2_3 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=1000,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=6,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit2(xgb2_3, X_train, y_train, cv_folds = kfold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nJhqVm6zyZOFzlPrqdWvGtX3y27+f8PWXXr16XFth1LLUl374wLi2a3758IT7vH6CY7rs+vHH9Ikr\nJz6miye4BcHF31pFU0NN2e0HrvnlehbPa6Chrrpsvd6v793GPWt309o52h/X3vIw9TVVdHSPBudv\n/uRBmuqr6S0Jclf+/CHqa6oYGh6hu6RQy/d+uZ5lC5rKpqKuerCVR3bsZWf7aJD8+Z2bqanO07Nv\nkNaSKabf/vlaFrTU0VeyLvOG2x5hTkNNWei86hfriu9f+ouDm+/emgTXkn9PC6Gzv2Sfff1D9PYN\nsq/kM+3rH0yre1J2nna09TA4OMy6raNTZO96sJXNO/fSWrIu8vdrd7FtVw+5HGXTZu9dv5ud7b1l\n3/e/X7uLTTv3FsM3JP1x3/o2BodH2F3SJ9f/duO4yqS33rudne297OsfPc6d7b309Q+xdsvoz8VP\nfreJ2pot7Osbom1P+RrOhS0NZf106+rtrN3cWRbkH9zUwcjICC2NtQwNza7/o4ZHRsq+T3a09zAy\nAhtKpjKv29LJwMAwOztGz3PHnj469vZRU50/In4RYZiSdERxtEwHS011nvklN1wurEPLlczTm9dc\nx4pFSYgbHB69qDh55fxiQCuEkOecuqLYVghTr3jOxAHvlWn7uq2dxTD1queeMOHatqMWNdHXP8RD\nmzv4QrqO7a0vPYljFjezuXUvX/5REk5e/uzjqKuuYsOOPdyevv/xy5upq6mip2+QR3YkUwKXLWgE\noH8wuVie7CbXh6v+wWH6x9x+4P4N7UD7uG1/sWrruLbV69vGtW0oGWUrKIyCjnXfhnbu21D+XhMF\n2cIvCcZau6UTxtR/uSO9jUOp+EjHhK+/5Z5t4/Y9Uei85MrxbZOF1okC8kRB+Ie3bpzw9d+/ZcOU\ntp2oPwDuenDXuLabVm3hplXlJ2qiqby3rxm/fhMKazjLfxkxUeGdK3720ISv/8K199HcWFO2tvQb\nN0SqqvJl4fbSq++lrqaKwZLtvvSD+6mvqyafy5WFucuuW0NtTRW9JQHxi9+/j+qqfNmI7Ce/fTeD\nQyPjglDhl0Slrvz52nFtl14z/hcjkBQZqqupGjeVeU5DDYMlQbLSAphhSpIO0GwcwZOAdNpeDU31\nNSwqWU+1fGETK5c1lwW8J58wuratEKbOfeH4Ubl3vuKUsumYhfZ/PPd0jlrUxEObO/ns1cmasD97\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x202079f1fd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('my_preds4_6_226.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[100:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(100,cvresult.shape[0]+100)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail4_6_226.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 行列重采样参数调整\n",
    "\n",
    "Best: -0.579411 using {'subsample': 0.8, 'colsample_bytree': 0.8}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'colsample_bytree': [0.6, 0.7, 0.8, 0.9],\n",
       " 'subsample': [0.3, 0.4, 0.5, 0.6, 0.7, 0.8]}"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "subsample = [i/10.0 for i in range(3,9)]\n",
    "colsample_bytree = [i/10.0 for i in range(6,10)]\n",
    "param_test3_1 = dict(subsample=subsample, colsample_bytree=colsample_bytree)\n",
    "param_test3_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda2\\envs\\python3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:667: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.58717, std: 0.00142, params: {'subsample': 0.3, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58430, std: 0.00245, params: {'subsample': 0.4, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58268, std: 0.00150, params: {'subsample': 0.5, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58184, std: 0.00186, params: {'subsample': 0.6, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58085, std: 0.00228, params: {'subsample': 0.7, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58012, std: 0.00264, params: {'subsample': 0.8, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58814, std: 0.00227, params: {'subsample': 0.3, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58498, std: 0.00241, params: {'subsample': 0.4, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58316, std: 0.00267, params: {'subsample': 0.5, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58198, std: 0.00258, params: {'subsample': 0.6, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58028, std: 0.00202, params: {'subsample': 0.7, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58060, std: 0.00157, params: {'subsample': 0.8, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58725, std: 0.00358, params: {'subsample': 0.3, 'colsample_bytree': 0.8},\n",
       "  mean: -0.58488, std: 0.00197, params: {'subsample': 0.4, 'colsample_bytree': 0.8},\n",
       "  mean: -0.58254, std: 0.00308, params: {'subsample': 0.5, 'colsample_bytree': 0.8},\n",
       "  mean: -0.58090, std: 0.00248, params: {'subsample': 0.6, 'colsample_bytree': 0.8},\n",
       "  mean: -0.58042, std: 0.00240, params: {'subsample': 0.7, 'colsample_bytree': 0.8},\n",
       "  mean: -0.57941, std: 0.00196, params: {'subsample': 0.8, 'colsample_bytree': 0.8},\n",
       "  mean: -0.58669, std: 0.00274, params: {'subsample': 0.3, 'colsample_bytree': 0.9},\n",
       "  mean: -0.58431, std: 0.00245, params: {'subsample': 0.4, 'colsample_bytree': 0.9},\n",
       "  mean: -0.58306, std: 0.00196, params: {'subsample': 0.5, 'colsample_bytree': 0.9},\n",
       "  mean: -0.58173, std: 0.00186, params: {'subsample': 0.6, 'colsample_bytree': 0.9},\n",
       "  mean: -0.58174, std: 0.00132, params: {'subsample': 0.7, 'colsample_bytree': 0.9},\n",
       "  mean: -0.58040, std: 0.00220, params: {'subsample': 0.8, 'colsample_bytree': 0.9}],\n",
       " {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       " -0.5794108093588759)"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb3_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=233,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=6,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "gsearch3_1 = GridSearchCV(xgb3_1, param_grid = param_test3_1, scoring='neg_log_loss', n_jobs=-1, cv=kfold)\n",
    "gsearch3_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch3_1.grid_scores_, gsearch3_1.best_params_,     gsearch3_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.579411 using {'subsample': 0.8, 'colsample_bytree': 0.8}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2020796fa20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print(\"Best: %f using %s\" % (gsearch3_1.best_score_, gsearch3_1.best_params_))\n",
    "test_means = gsearch3_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch3_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch3_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch3_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch3_1.cv_results_).to_csv('my_preds_subsampleh_colsample_bytree_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(colsample_bytree), len(subsample))\n",
    "train_scores = np.array(train_means).reshape(len(colsample_bytree), len(subsample))\n",
    "\n",
    "for i, value in enumerate(colsample_bytree):\n",
    "    pyplot.plot(subsample, -test_scores[i], label= 'test_colsample_bytree:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'subsample' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'subsample_vs_colsample_bytree1.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 正则参数进行调优\n",
    "\n",
    "{'reg_alpha': 0.1, 'reg_lambda': 0.5}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'reg_alpha': [0.1, 1], 'reg_lambda': [0.5, 1, 2]}"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg_alpha = [ 0.1, 1]    #default = 0, 测试0.1,1，1.5，2\n",
    "reg_lambda = [0.5, 1, 2]      #default = 1，测试0.1， 0.5， 1，2\n",
    "\n",
    "param_test5_1 = dict(reg_alpha=reg_alpha, reg_lambda=reg_lambda)\n",
    "param_test5_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda2\\envs\\python3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:667: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.57942, std: 0.00214, params: {'reg_alpha': 0.1, 'reg_lambda': 0.5},\n",
       "  mean: -0.57948, std: 0.00180, params: {'reg_alpha': 0.1, 'reg_lambda': 1},\n",
       "  mean: -0.57955, std: 0.00196, params: {'reg_alpha': 0.1, 'reg_lambda': 2},\n",
       "  mean: -0.57990, std: 0.00236, params: {'reg_alpha': 1, 'reg_lambda': 0.5},\n",
       "  mean: -0.57949, std: 0.00224, params: {'reg_alpha': 1, 'reg_lambda': 1},\n",
       "  mean: -0.57967, std: 0.00251, params: {'reg_alpha': 1, 'reg_lambda': 2}],\n",
       " {'reg_alpha': 0.1, 'reg_lambda': 0.5},\n",
       " -0.5794210720140806)"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb5_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=233,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=6,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.8,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch5_1 = GridSearchCV(xgb5_1, param_grid = param_test5_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch5_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch5_1.grid_scores_, gsearch5_1.best_params_,     gsearch5_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20207941e48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_means = gsearch5_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch5_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch5_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch5_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch5_1.cv_results_).to_csv('my_preds_reg_alpha_reg_lambda_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "train_scores = np.array(train_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "\n",
    "#log_reg_alpha = [0,0,0,0]\n",
    "#for index in range(len(reg_alpha)):\n",
    "#   log_reg_alpha[index] = math.log10(reg_alpha[index])\n",
    "    \n",
    "for i, value in enumerate(reg_alpha):\n",
    "    pyplot.plot(reg_lambda, -test_scores[i], label= 'reg_alpha:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'reg_alpha' )                                                                                                      \n",
    "pyplot.ylabel( '-Log Loss' )\n",
    "pyplot.savefig( 'reg_alpha_vs_reg_lambda1.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 调用模型进行测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "bathrooms                     0\n",
       "bedrooms                      0\n",
       "price                         0\n",
       "price_bathrooms               0\n",
       "price_bedrooms                0\n",
       "room_diff                     0\n",
       "room_num                      0\n",
       "Year                          0\n",
       "Month                         0\n",
       "Day                           0\n",
       "Wday                          0\n",
       "Yday                          0\n",
       "hour                          0\n",
       "top_10_manager                0\n",
       "top_25_manager                0\n",
       "top_5_manager                 0\n",
       "top_50_manager                0\n",
       "top_1_manager                 0\n",
       "top_2_manager                 0\n",
       "top_15_manager                0\n",
       "top_20_manager                0\n",
       "top_30_manager                0\n",
       "cenroid                       0\n",
       "distance                      0\n",
       "display_address_pred_0    74659\n",
       "display_address_pred_1    74659\n",
       "display_address_pred_2    74659\n",
       "1br                           0\n",
       "24                            0\n",
       "2br                           0\n",
       "                          ...  \n",
       "studio                        0\n",
       "sublet                        0\n",
       "subway                        0\n",
       "super                         0\n",
       "superintendent                0\n",
       "swimming                      0\n",
       "tenant                        0\n",
       "term                          0\n",
       "terrace                       0\n",
       "time                          0\n",
       "tons                          0\n",
       "train                         0\n",
       "true                          0\n",
       "tv                            0\n",
       "unit                          0\n",
       "utilities                     0\n",
       "valet                         0\n",
       "video                         0\n",
       "view                          0\n",
       "views                         0\n",
       "virtual                       0\n",
       "walk                          0\n",
       "walls                         0\n",
       "war                           0\n",
       "washer                        0\n",
       "water                         0\n",
       "wheelchair                    0\n",
       "wifi                          0\n",
       "windows                       0\n",
       "work                          0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# drop ids and get labels\n",
    "#y_test = test['interest_level']\n",
    "test = test.drop([\"display_address_pred_0\", \"display_address_pred_1\", \"display_address_pred_2\"], axis=1)\n",
    "X_test = np.array(test)\n",
    "\n",
    "# prepare cross validation\n",
    "#kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda2\\envs\\python3\\lib\\site-packages\\sklearn\\preprocessing\\label.py:171: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n",
      "  if diff:\n"
     ]
    }
   ],
   "source": [
    "xgbt = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=233,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=6,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.8,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3,\n",
    "        reg_alpha=0.1)\n",
    "\n",
    "xgbt.fit(X_train, y_train)\n",
    "y_test = xgbt.predict(X_test)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 生成测试结果文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "pdy_test = pd.DataFrame(y_test, columns=['interest_level'])\n",
    "test = pd.concat([test, pdy_test],axis=1)\n",
    "test.head()\n",
    "test.to_csv('mytest.csv')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
